<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 有些“死区”比较隐蔽，不太容易发现。
        function bar(x = y, y = 2) {
            return [x, y];
        }
        bar(); // 报错
        // 上面代码中，调用bar函数之所以报错（某些实现可能不报错），是因为参数x默认值等于另一个参数y，而此时y还没有声明，属于“死区”。如果y的默认值是x，就不会报错，因为此时x已经声明了。
        function bar(x = 2, y = x) {
            return [x, y];
        }
        bar(); // [2, 2]
        
    </script>
</body>

</html>